Machine Learning - L8 Notes

Contents

  1. 1. Backpropagation (L8)
    1. 1.1. Forward Pass
    2. 1.2. Backward Pass
      1. 1.2.1. Output Layer
      2. 1.2.2. Not Output Layer
      3. 1.2.3. 結論

Backpropagation (L8)

當我們在進行 Gradient descent 時,可能會需要對很多維的 vector 來進行偏微分,
而要如何有效率地做這件事?使用的就是 Backpropagation
(Gradient 也是個 vector)

8-2

待會會用到 Chain rule:

8-3

在進行 loss function 計算時,我們要把每筆 $y^n$ (output) 和 $\hat{y^n}$ (target) 的距離相加起來(前面是說用 cross entropy),
然後對其做偏微分

8-4

要把全部資料計算後的結果加總,這邊我們先只看一筆資料 Cost 的偏微分。

以一個 neuron 來看:

8-5

要算出某筆資料的 $\frac{\partial{C}}{\partial{W}}$ ,利用 Chain rule 分成兩項後,
分別會用到 Forward PassBackward Pass

Forward Pass

8-6

很明顯可以看出來用 $w_n$ 做偏微分時,其結果就會是他的 input ($x_n$)。

所以要算出這個 Neural Network 中,每個 weight 對其 activation function 做偏微分的結果,
只要把 input 丟進去後,算出 每個 Neuron 的 output 即可。
一層一層下去後就會像是這樣向前傳遞:

8-7

Backward Pass

對第二項 $\frac{\partial{C}}{\partial{z}}$ 再做 Chain rule 分成兩項,
其中一項 $\frac{\partial{a}}{\partial{z}}$ ,$a$ 是 $z$ 代進 sigmoid function 後的結果,所以用 $z$ 對它作微分,就會是 sigmoid function 在 $z$ 的 導數。 ($\sigma^{\prime}(z)$)

8-9

接著下一項 $\frac{\partial{C}}{\partial{a}}$ 可以再用 chain rule 繼續分:

其中 $\frac{\partial{z^\prime}}{\partial{a}}$ 就等於其 weight ($w_3$),以此類推傳到下個 neuron 的就是 $w_4$。

而麻煩的是 $\frac{\partial{C}}{\partial{z^\prime}}$ ,在這邊我們假設已經知道它了。

8-10

式子統整就會像是:

8-12

其中 $\sigma^{\prime}(z)$ 在已經知道 $z$ 的情況下 是個常數。

Output Layer

假設現在下一層就是最後一層了($y_n$) ,我們可以把剛有困難的 $\frac{\partial{C}}{\partial{z^\prime}}$ 再次利用 chain rule ,就可以算出來了。
(這邊代號之間的關係,其實我已經搞不太清楚了…)

8-13

Not Output Layer

如果下一層不是 output layer ,就繼續往下一層看,直到 network 的 output 出來可以求出 $\frac{\partial{C}}{\partial{z_a}}$ 。

遞迴 的概念。

8-16

結論

8-18

本來我們從 $z_1$ 的偏微分開始算,需要知道 $z_2$ 的然後繼續往下直到 output layer。但這樣是沒有效率的。

所以我們如果 從後面做回來 ,也就是 $z_5,z_6$ 對 $C$ 偏微分開始算起,這樣接著就可以知道 $z_3,z_4$ 的。比較有效率。

(這邊的三角形符號是指 op-amp ,我已經不記得那是幹嘛的了…)

這個步驟就叫做 Backward Pass ,而實際上的做法就是再建一個反向的 neural network,而它的 activation function 要先算完 forward pass 才能知道。
這樣就能算出每個 $z$ 對 $C$ 的偏微分了。

8-19